﻿using System.Collections.ObjectModel;
using System.Linq;
using LiftHub.Data;

namespace LiftHub.ViewModels.Pages;

public class NotesPageModel : PageModelBase
{
    private NotesContext Context { get; set; }
    public ObservableCollection<Note> Notes { get; set; }

    public void Add(Note note)
    {
        Context.Notes.Add(note);
        Notes.Add(note);
        Context.SaveChanges();
    }

    public void Remove(Note note)
    {
        Context.Notes.Remove(note);
        Notes.Remove(note);
        Context.SaveChanges();
    }

    public void Remove(int key)
    {
        var item = Context.Notes.FirstOrDefault(x => x.Key == key);
        if(item == null)return;
        Remove(item);
    }

    public void Change(Note note)
    {
        var item = Context.Notes.FirstOrDefault(x => x.Key == note.Key);
        if (item == null)
        {
            Context.Notes.Add(note);
            Notes.Add(note);
        }
        else
        {
            item.Context = note.Context;
            item.Title = note.Title;
        }
        Context.SaveChanges();
    }

    protected override void Init()
    {
        Context = new NotesContext();
        Notes = new ObservableCollection<Note>(Context.Notes);
    }
}